home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 078 (1988-11-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 078 (1988-11-15)(Ossowski, Stefan)(DE)(PD).adf / Cluster / ClusterDOC < prev    next >
Text File  |  1988-08-14  |  15KB  |  347 lines

  1.  
  2.     Simulation eines Sternhaufens: Cluster V1.00
  3.     --------------------------------------------
  4.  
  5.     © 1988 Unicorn Systems
  6.  
  7.     Idee: A. K. Dewdney
  8.     Programm: Roger Meier
  9.  
  10.     Cluster ist Public Domain Software: Weiterkopieren von Programm,
  11.     Quellcode und Anleitung ohne Gewinn ist erwünscht. Richtet
  12.     weitergehende Fragen zum Programm an Roger Meier, Bernstrasse 67, 
  13.     4852 Rothrist (Schweiz).
  14.  
  15.  
  16.     Cluster besteht aus
  17.     -------------------
  18.  
  19.     - Cluster                        Das Simulationsprogramm
  20.     - ClusterDOC                     Dieser Text hier
  21.     - ClusterIO.c, ClusterIO.h,      Die verschiedenen Quellcode-Dateien
  22.       ClusterDEF.h, Cluster.c        in der Sprache C (Aztec C 3.6)
  23.       Cluster.h
  24.     - starI, starII, starIII,        Vorbereitete Sterndateien 
  25.       starIV, starV
  26.     - StarShow                       Batchdatei für die Sterndateien
  27.  
  28.  
  29.  
  30.     Compilieren (Aztec C 3.6a) des Programmes
  31.     -----------------------------------------
  32.  
  33.     cc Cluster.c
  34.     cc ClusterIO.c
  35.     ln Cluster.o ClusterIO.o -lm -lc
  36.  
  37.     Im Include-Verzeichnis müssen ClusterIO.h, Cluster.h und ClusterDEF.h
  38.  enthalten sein. Anstelle der m.lib kann auch eine Library mit doppelt
  39.  genauen Fliesskommafunktionen verwendet werden, allerdings wird die
  40.  Ausführung des Programmes dann empfindlich verlangsamt.
  41.  
  42.  
  43.  
  44.     Allgemeines
  45.     -----------
  46.  
  47.     A. K. Dewdney veröffentlichte im Spektrum der Wissenschaft einen
  48.  Bericht über die Simulation von Sternhaufen in einem Computer. Das
  49.  vorliegende Programm ist eine Umsetzung der im Bericht enthaltenen Ideen
  50.  für den Amiga.
  51.     Mit 'Cluster' kann das Verhalten eines Sternhaufens über Jahrtausende
  52.  hinweg in wenigen Minuten simuliert werden.  Die Bahnen der Sterne
  53.  werden auf dem Bildschirm in Form von verschieden gefärbten Linien
  54.  angezeigt.  Jede Linie steht dabei für einen Stern des Haufens und kann
  55.  eine von 16 Farben annehmen.  Das Programm liest die Anfangsbedingungen
  56.  für eine Simulation von einer Textdatei in den Speicher ein.  Diese
  57.  Datei kann mit einem beliebigen Texteditor erstellt werden und enthält
  58.  die Position, die Startgeschwindigkeit und die Farbe für jeden Stern des
  59.  Systems.
  60.     Die Simulation ist natürlich nicht der Wirklichkeit entsprechend.
  61.  Beim Computer handelt es sich um ein diskretes System, das dazu
  62.  verwendet wird, einen analogen Vorgang der Natur zu imitieren. Hier
  63.  sehen wir die Grenzen von Computern (besonders eines Homecomputers) sehr
  64.  deutlich: Wenn sich zwei Sterne sehr nahe kommen, steigt die
  65.  gegenseitige Beschleunigung durch die Gravitationskraft so stark an,
  66.  dass auch bei einem sehr kleinen Zeitinkrement der Simulation die Bahnen
  67.  der Sterne stark verfälscht werden. Diese Verfälschung der Bahnen steigt
  68.  mit der Anzahl der Zyklen der Simulation.
  69.     In der Natur besteht ein Sternhaufen aus tausenden bis
  70.  hunderttausenden von Einzelsternen. Auf dem Amiga können solche
  71.  Ansammlungen natürlich nicht simuliert werden, man würde schon nach dem
  72.  ersten Zyklus der Berechnung alt und grau sein.
  73.     Es ist auch sehr die Frage, ob ein Sternhaufen nur durch die
  74.  Gravitationskräfte der einzelnen Sterne zusammengehalten wird. Ich
  75.  verstehe nicht viel von Himmelsmechanik, aber sicher spielen schon der
  76.  interstellare Staub und die Dichte des Raumes selbst eine kleine Rolle.
  77.     Trotz Allem ist es aber sehr faszinierend, einem Sternhaufen bei der
  78.  Arbeit zuzusehen.  Man erkennt auch, dass sich alle (jedenfalls meine)
  79.  Sternhaufen nach einer gewissen Zeit in die unendlichkeit des Raumes
  80.  zerstreuen. Darf astronomisch gesehen in diesem Fall überhaupt von einem
  81.  Sternhaufen geredet werden? Kommentare erwünscht.
  82.  
  83.  
  84.  
  85.     Die Einheiten
  86.     -------------
  87.  
  88.     Weil die Rechengenauigkeit der FFP-Routinen des Amiga nicht gerade
  89.  überragend ist (von -9.2234e18 bis 9.2234e18, die kleinsten Zahlen sind
  90.  5.421e-20 und -2.711e-20) und weil die Entfernungen im interstellaren
  91.  Raum ziemlich gross sind, habe ich folgende Einheiten gewählt:
  92.  
  93.     Entfernung:  1 AE (astronomische Einheit) = 1.49*10^11 m (meter)
  94.     Masse:       1 Sonnenmasse                = 1.9836519*10^33 g (gramm)
  95.     Zeit:        1 Jahr                       = 3.1536*10^7 s (sekunden)
  96.     
  97.     Bei allen meinen Versuchen hatte ich nie einen Ueberlauf.  Ich kann
  98.  mir aber vorstellen, dass sich bei entsprechend grossen Entfernungen (z. 
  99.  B.  Galaxienhaufen) schon mal ein Guru melden kann.  Wenn die Einheiten
  100.  geändert werden, muss die Gravitationskonstante berücksichtigt werden:
  101.  In die oben genannten Einheiten umgerechnet, beträgt sie
  102.  
  103.                                     AE³
  104.                          39.91  -----------
  105.                                 sol * jahr²
  106.  
  107.     Wenn andere Einheiten verwendet werden, muss die Konstante GKONST
  108.  (Datei ClusterDEF.h) entsprechend umgerechnet und geändert werden.
  109.  
  110.  
  111.  
  112.     Die Sterndatei
  113.     --------------
  114.  
  115.     Sie besteht nur aus Zahlen, die voneinander entweder durch
  116.  Leerzeichen, Tabulatoren oder Return-Zeichen getrennt sind. Die
  117.  Informationen müssen nach diesem Schema vorhanden sein:
  118.  
  119.     nn
  120.     x1|y1|z1|vx1|vy1|vz1|m1|c1|
  121.     x2|y2|z2|vx2|vy2|vz2|m2|c2|
  122.     ...
  123.     xnn|ynn|znn|vxnn|vynn|vznn|mnn|cnn|
  124.  
  125.     Die |-Zeichen stehen für eines der genannten Trennzeichen. Die Zahl
  126.  nn beschreibt die Anzahl der Sterne, die in dieser Datei beschrieben
  127.  werden. x, y und z sind die Lage des Sterns in den drei Achsen des
  128.  Koordinatensystems: (+Z in Richtung des Betrachters)
  129.  
  130.                        +Y  
  131.                         | /-Z
  132.                         |/
  133.                  -X ----0---- +X
  134.                        /|
  135.                     +Z/ |
  136.                        -Y
  137.  
  138.     vx, vy und vz sind die Geschwindigkeiten in Richtung der drei Achsen,
  139.  die der betreffende Stern besitzt.  Die Geschwindigkeit wird in
  140.  astronomischen Einheiten pro Jahr (AE/jahr) angegeben.  m steht für die
  141.  Masse des Sterns in Anzahl Sonnenmassen (ich nenne diese manchmal auch
  142.  "sol" - es ist mir nichts besseres eingefallen).  Schliesslich muss mit
  143.  c noch die Farbe des Sterns angegeben werden: Ein Wert von 1 bis 15 wird
  144.  erwartet.  Null ist auch möglich, allerdings wird die Bahn des Sternes
  145.  dann unsichtbar.  Bis auf die Farbe können alle Werte Fliesskommazahlen
  146.  sein.  Der Exponent wird durch ein kleines oder grosses e von der
  147.  Mantisse getrennt.  Sowohl die Mantisse wie auch der Exponent können mit
  148.  einem Vorzeichen versehen werden.  In einer Zahl selber dürfen aber
  149.  keine Trennzeichen vorkommen:
  150.  
  151.     Falsch:     1.22e -20      (wird als zwei Zahlen interpretiert)
  152.     Richtig:    1.22e-20
  153.  
  154.  
  155.  
  156.     Die Anzeige der Sterne
  157.     ----------------------
  158.  
  159.     Auf dem Bildschirm wird die Ansicht von der positiven Seite der
  160.  Z-Achse her in Richtung negativer Seite wiedergegeben.  Die Z-Achse ist
  161.  demzufolge nicht direkt sichtbar, allerdings lässt sich zum Teil aus den
  162.  Bahnen die Wirkung der Z-Achse indirekt erahnen.
  163.     Das Programm läuft auf einem PAL-Amiga einwandfrei, auf einem
  164.  NTSC-Amiga SOLLTE es ebenfalls keine Probleme geben - allerdings habe
  165.  ich das bisher noch nicht testen können.
  166.  
  167.  
  168.  
  169.     Aufruf des Programmes
  170.     ---------------------
  171.  
  172.     Die Simulation kann nur vom CLI aus gestartet werden. Es stehen
  173.  folgende Optionen zur Verfügung:
  174.  
  175.     -g          Guru-Sicherung. Wenn die Option angegeben ist, wird die
  176.                 oberste Zeile des Titelbalkens vom Screen noch angezeigt.
  177.                 Dadurch kann der Screen nach einem Absturz nach unten
  178.                 gezogen werden (aus den Augen, aus dem Sinn).
  179.     -s nn       nn steht für den Skalierungsfaktor. Wenn -s nicht
  180.                 angegeben wird, wird dieser Faktor vom Programm
  181.                 ausgerechnet. Bevor ein Stern angezeigt werden kann,
  182.                 wird seine Position mit diesem Faktor multipliziert. 
  183.                 Wenn ein gegebener Faktor kleiner gemacht wird, erscheint
  184.                 der Sternhaufen aus grösserer Entfernung (und umgekehrt).
  185.     -d nn       Wenn sich zwei Sterne näher als nn AE kommen, wird das
  186.                 Zeitinkrement auf ein zehntel des ursprünglichen Wertes
  187.                 verkleinert. Wenn sich die Sterne wieder voneinander
  188.                 entfernt haben, wird das normale Zeitinkrement verwendet.
  189.                 Wenn -d nicht angegeben wird, ist diese Grenze = 1 AE.
  190.     -t nn       Zeitinkrement. Pro Berechnungszyklus wird die Zeit (das
  191.                 Alter des Sternhaufens) um nn Jahre erhöht. Wenn -t nicht
  192.                 angegeben wird, ist das Zeitinkrement = 1 Jahr.
  193.     -z nn       Die Programmausführung bricht nach nn Zyklen ab. Wenn -z
  194.                 nicht verwendet wird, muss die Simulation von Hand 
  195.                 (siehe unten) abgebrochen werden.
  196.     Filename    Dies ist der Name der Textdatei, in der die Anfangsdaten
  197.                 der einzelnen Sterne der Simulation enthalten sind (siehe
  198.                 oben: Sterndatei).
  199.  
  200.     Ein typischer Start einer Simulation sieht etwa so aus:
  201.  
  202.     Cluster starI -t 0.1
  203.  
  204.     Die Sterndatei wäre hier "starI", das Zeitinkrement ein Zehntel eines
  205.  Jahres (36.5 Tage).  Wenn die Simulation läuft, stehen folgende
  206.  Kontrollen über die Tastatur zur Verfügung:
  207.  
  208.     q           Stoppt die Simulation, schliesst ein eventuell geöffnetes
  209.                 Datenfenster und wartet anschliessend auf einen
  210.                 zweiten (beliebigen) Tastendruck, um das Programm zu
  211.                 verlassen.
  212.     d           Oeffnet ein Fenster, in dem verschiedene Daten zur
  213.                 laufenden Simulation angezeigt werden:
  214.                 - Alter: Das Alter des Sternhaufens in Jahren.
  215.                 - Zyklus: Die Zeit eines normalen Zyklus in Jahren.
  216.                 - Skalierung: Der Faktor zur Anzeige auf dem Monitor.
  217.                 - Objekte: Die Anzahl der Objekte der Simulation.
  218.     c           Schliesst ein offenes Datenfenster.
  219.  
  220.     Bitte beachten: Wenn mit 'd' ein Datenfenster geöffnet wurde, sind
  221.  die Kontrolltasten nur wirksam, wenn das Datenfenster NICHT AKTIV ist.
  222.  Dies ist deshalb der Fall, weil das Programm nur das Startfenster (mit
  223.  dem schwarzen Hintergrund) als Eingabequelle berücksichtigt.
  224.  
  225.     Noch etwas zum Skalierungsfaktor: Programmintern gibt es zwei dieser
  226.  Faktoren, jeweils einen für die x- und y-Achse des Bildschirmes. Weil
  227.  die Höhe des Bildschirmes nicht feststeht (PAL = 256, NTSC = 200 Pixel)
  228.  werden zwei Faktoren benötigt, die nach dem Start des Programmes
  229.  berechnet werden. Auf diese Weise sollten mit verschiedenen Auflösungen
  230.  keine Verzerrungen der Darstellung auftreten.
  231.  
  232.  
  233.  
  234.     Starshow
  235.     --------
  236.  
  237.     Mit dem Programm kommen auch fünf vorbereitete Sterndateien und eine
  238.  Batchdatei, die diese fünf Simulationen nacheinander ablaufen lässt. Um
  239.  das Ganze zu starten geht man etwa so vor:
  240.  
  241.     1. CLI eröffnen
  242.     2. Befehl "cd AUGS_8-88:Utilities/Cluster" eingeben.
  243.     3. Befehl "execute AUGS_8-88:Utilities/Cluster/StarShow" eingeben.
  244.  
  245.     Sobald die erste Simulation begonnen hat, stehen die oben
  246.  beschriebenen Kontrollmöglichkeiten zur Verfügung. Wenn alle fünf
  247.  Simulationen beendet sind, findet sich der Amiga im CLI-Fenster wieder.
  248.  Das Schliessen der CLI-Fensters erfolgt durch den Befehl "endcli".
  249.     Noch eine Anmerkung zu "starII" und "starIII": Es handelt sich hier
  250.  um die 17 der Sonne am nächsten Stehenden Sterne, allerdings sind die
  251.  Daten etwas 'frisiert': Bei beiden Sterndateien sind die Entfernungen um
  252.  den Faktor 1000 vermindert worden. Bei "starII" wurden die
  253.  Sternmassen um den Faktor 10, bei "starIII" um den Faktor 100 erhöht. Nur
  254.  auf diese Weise werden die Bahnen etwas abgelenkt. Wenn die Daten den
  255.  Natürlichen Gegebenheiten entsprechen würden, verliefen die Sternbahnen
  256.  schnurgerade über den Bildschirm.
  257.  
  258.  
  259.  
  260.     Zeitfragen
  261.     ----------
  262.  
  263.     Das Programm ist so aufgebaut, dass für n Sterne n² Berechnungen der
  264.  Kräfte zwischen den Sternen ausgeführt werden müssen.  Nach diesen n²
  265.  Rechnungen ist ein Zyklus vollzogen und der Sternhaufen wird um ein
  266.  Zeitinkrement älter.  Eine Berechnung der Kräfte zwischen zwei Objekten
  267.  erfordert aber wiederum einige einzelne Operationen mit Fliesskomma-
  268.  zahlen.  Wenn all dies berücksichtigt wird, findet man für einen Zyklus 
  269.  folgende Mengen an Fliesskommaoperationen:
  270.  
  271.     Grundrechenarten:             21n² + 29n
  272.     Vergleiche (ca.):             2n² - 2n + 1
  273.     Quadratwurzelberechnungen:    n² - n
  274.     Zuweisungen (ca.):            10n² - n + 2
  275.  
  276.     Beispielsweise benötigt ein Zyklus in einem System mit 18 Sternen
  277.  (n = 18) 11469 Operationen, davon sind 306 Wurzelberechnungen.
  278.  
  279.  
  280.  
  281.     Fehler im Programm
  282.     ------------------
  283.  
  284.     Vermutlich eine endlose Liste. Ich bin für Informationen über Bugs
  285.  des Programmes jedenfalls sehr dankbar. Bekanntschaft mit dem Guru ist
  286.  allerdings eher selten.
  287.  
  288.  
  289.  
  290.     Was verbessert werden kann
  291.     --------------------------
  292.  
  293.     Das Programm erkennt in der jetzigen Version keine Kollisionen
  294.  zwischen zwei Gestirnen.  Deshalb geschieht es oft, dass sich zwei
  295.  Sterne gegenseitung umrunden (Doppelsystem) und schliesslich, anstatt zu
  296.  kollidieren, ins All geschleudert werden.  Man könnte den Durchmesser
  297.  der Sterne in die Sterndatei aufnehmen und bei jedem Berechnungszyklus
  298.  auf Zusammenstösse testen.  Wenn sich zwei Sterne treffen, sollten sie
  299.  zu einem einzigen Objekt zusammengefasst werden und in einer den
  300.  ursprünglichen Flugrichtungen und Geschwindigkeiten entsprechenden Bahn
  301.  weiterfliegen. 
  302.  
  303.     Mehrere Sterne, die nahe zusammenliegen, könnte man mathematisch für
  304.  eine gewisse Zeit zu einem einzigen Objekt verschmelzen.  Wenn sie sich
  305.  dann wieder genügend voneinander entfernt haben, müssten die
  306.  einzelsterne wieder hervortreten.  Auf diese Weise könnte Rechenzeit
  307.  gespart werden, und es könnten grössere Sternhaufen simuliert werden. 
  308.  
  309.     Die Entfernungsgrenze, nach der das Zeitinkrement verkleinert wird,
  310.  könnte etwas fliessender sein: Anstelle von nur einer Stufe vielleicht
  311.  fünf oder zehn.  Natürlich müsste das Zeitinkrement nicht linear,
  312.  sondern in einer geometrischen Kurve steigen.  So würde die Genauigkeit
  313.  einer Simulation erhöht und trotzdem Rechenzeit gespart.
  314.  
  315.     Die Anzeige der Sternbahnen könnte anstelle aus Punkten aus Linien
  316.  bestehen.  Die Linien würden entstehen, indem einfach die letzte
  317.  Position eines Sternes mit der neuen verbunden würde.  Ebenfalls könnte
  318.  (per Option beim Aufruf) der Sternhaufen zweimal aus einer
  319.  jeweils anderen Perspektive angezeigt werden. Man könnte das Ganze auf
  320.  die Spitze treiben, indem man eine Rot-Grün Brille trägt und beide
  321.  Bilder übereinanderlegt. So würde ein räumlicher Eindruck entstehen
  322.  (allerdings müsste auf Farbige Sternbahnen verzichtet werden).
  323.  
  324.     Schliesslich sind die Steuerungsmöglichkeiten einer gestarteten
  325.  Simulation etwas beschränkt.  Gut wäre: Aendern des Skalierungsfaktors
  326.  (gewissermassen ein Zoom-Objektiv), ändern der Bahndaten eines einzelnen
  327.  Sterns, ändern des Zeitinkrements, stoppen der Simulation und
  328.  abspeichern der aktuellen Bahndaten als neue Sterndatei.  Die Farben
  329.  könnten ähnlich wie in einer Sterndatei beim Start des Programmes aus
  330.  einer Datei gelesen werden. 
  331.  
  332.     Wenn ich in den nächsten Wochen Zeit finde, werde ich einige der be-
  333.  schriebenen Punkte in einer zweiten Version berücksichtigen.
  334.  
  335.  
  336.     Fehlerbeschreibung an/ weitere Infos von
  337.     ----------------------------------------
  338.  
  339.     Unicorn Systems
  340.     Roger Meier
  341.     Bernstrasse 67
  342.     4852 Rothrist
  343.  
  344.           !!!! Join the Amiga User Group Switzerland !!!!
  345.                         (Adresse wie oben)
  346.  
  347.